package com.mojo.concurrent.lambda;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author <a href="mailto:mojo_jj@163.com">Mojo</a>
 */
public class Lambda01 {
    public static void main(String[] args) {
        //函数式接口
        //new Thread(() -> {
        //    System.out.println("lambda实现线程");
        //    System.out.println("lambda实现线程");
        //}).start();
        //自定义函数式接口
        //Animal animal = () -> System.out.println("dongwupao");
        //animal.run();
        //但参数的函数式接口
        //test1();
        /**lambda省略格式
         *
         //1.一个参数的可以省略括号
         //2.参数列表的类型可以省略
         //3.实现方法只有一行时，大括号，return，分号可以一起省略
         */
        new Thread(() -> System.out.println("sds")).start();
        //TODO 这个地方的lambda写法还不是很理解
        int bb = invokeSum(12, 2, Integer::sum);
        int aa = invokeSum(12, 2, Integer::max);
        System.out.println(aa);
        System.out.println(bb);

    }

    private static void test1() {
        Person[] people = new Person[]{
                new Person("bbb", 22),
                new Person("aaa", 11),
                new Person("ccc", 33)
        };
        Arrays.sort(people, (o1, o2) -> o2.age - o1.age);
        Arrays.sort(people, Comparator.comparingInt(o -> o.age));
        for (Person person : people) {
            System.out.println(person);
        }
    }

    public static int invokeSum(int i, int j, Calculator c) {
        return c.sum(i, j);
    }

}
